﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace CRM.CapaDatos
{
    /// <summary>
    /// Clase ue abstrae los proveedores de datos
    /// </summary>
    class GenericProvider
    {
        /// <summary>
        /// Constructor
        /// </summary>
        private GenericProvider()
        { }

        /// <summary>
        /// Metodo que construye una conexion
        /// </summary>
        /// <param name="conString">Nombre de la cadena de conexion</param>
        /// <returns>Conexion</returns>
        public static IDbConnection CreateConnection(string conString)
        {
            return new SqlConnection(conString);
        }

        /// <summary>
        /// Metodo que construye un comando
        /// </summary>
        /// <param name="con">Conexion</param>
        /// <param name="spName">Nombre del procediminto almacenado a utilizar</param>
        /// <returns>Comando</returns>
        public static IDbCommand CreateStoredProcedure(IDbConnection con, string spName)
        {
            IDbCommand com = con.CreateCommand();
            com.CommandText = spName;
            com.CommandType = CommandType.StoredProcedure;
            return com;
        }

        /// <summary>
        /// Metodo que construye un Parametro
        /// </summary>
        /// <param name="com">comando</param>
        /// <param name="paramName">Nombre del Parametro</param>
        /// <param name="paramValue">Valor del Parametro</param>
        /// <returns>Parametro</returns>
        public static IDbDataParameter CreateParameter(IDbCommand com, string paramName, object paramValue)
        {
            IDbDataParameter parameter = com.CreateParameter();
            parameter.ParameterName = paramName;
            parameter.Value = paramValue;
            return parameter;
        }
    }
}
